package main

import "fmt"

const Max int = 3

func swap3(x *int, y *int) {
	var temp int
	temp = *x
	*x = *y
	*y = temp
}

func main() {
	/*var a int = 10
	fmt.Printf("变量的地址是%x\n", &a)*/

	/*// 声明实际变量
	var a int = 20
	// 声明指针变量
	var ip *int
	ip = &a// 指针变量的存储地址
	fmt.Printf("a变量的地址是：%x\n", &a)
	fmt.Printf("ip变量存储的指针地址：%x\n", ip)
	fmt.Printf("*ip变量的值：%d\n", *ip)*/

	/*var ptr *int
	fmt.Printf("ptr的值为：%x\n", ptr)// 空指针值为0*/

	/*a := []int{10, 100, 200}
	var i int
	for i = 0; i < Max; i++ {
		fmt.Printf("a[%d] = %d\n", i, a[i])
	}*/

	/*a := []int{10, 100, 200}
	var i int
	var ptr [Max]*int
	for i = 0; i< Max; i++ {
		ptr[i] = &a[i]// 整数地址赋值给指针数组
	}
	for i = 0; i < Max; i++ {
		fmt.Printf("a[%d] = %d\n", i, *ptr[i])
	}*/

	// 定义局部变量
	var a int = 100
	var b int = 200
	fmt.Printf("交换前a的值：%d\n", a)
	fmt.Printf("交换前b的值：%d\n", b)
	// 调用函数用于交换值
	// &a 指向a变量的地址
	// &b 指向b变量的地址
	swap3(&a, &b)
	a, b = b ,a
	fmt.Printf("交换后a的值：%d\n", a)
	fmt.Printf("交换后b的值：%d\n", b)


}
